#include "GatherDataHandlerMemory.h"
#include "stdio.h"

// 声明处理后的结构体
GatherDataTarget gatherDataTarget;
// 引入LED闪烁标志位
extern int heartState;
// 申明轮询次数
int times = 0;

// 原始数据处理函数
void porcessData(const GatherData* data)
{
    gatherDataTarget.temp = data->temp;
    gatherDataTarget.humi = data->humi;
    gatherDataTarget.somke = data->somke / 40;
    gatherDataTarget.raidrop = data->raidrop;
    gatherDataTarget.sunshine = 100 - data->sunshine / 40;
}

// 数据清洗函数
u8 clearData(const GatherData* data)
{
    // 判断温度传感器数据是否是有效数据
    if (data->temp > 165)
    {
        times ++;
        // 轮询10次
        if (times > 10)
        {
            // 10次都是这个数据说明固件异常
            // LED常亮示警
            heartState = 0;
            // 清空轮询次数
            times = 0;
            return 0;
        }
        return 1;
    }else
    {
        times = 0;
        heartState = 1;
        return 0;
    }
}

// 数据处理逻辑
void dataHandler(GatherData* data)
{
    // 非空判断
    if (data == NULL)
    {
        printf("gatherdata is null !\r\n");
        return;
    }

    // 数据清洗
    u8 res = clearData(data);
    if(res) return;
    if(heartState == 0) return;

    //数据处理
    porcessData(data);
    
}